1.10 Prekladanie, kompilácia a beh programu
Program je postupnosť príkazov v strojovom kóde, ktoré zavedieme do počítača. Keď program beží, načíta údaje zo vstupných zariadení, spracuje ich, vypíše údaje na výstupné zariadenie resp. zariadenia. Nemusí každý program vykonávať všetky činnosti, ale musí byť rozumný. Môže sa stať, že náš program nebude spracovávať údaje ale znaky z klávesnice priamo vytlačí na tlačiarni. Alebo program spracuje údaje a výsledok nezobrazí na žiadnom zariadení. Ale potom vznikne otázka, načo sme ten program písali?
Pri zapnutí počítača sa automaticky vykoná zavedenie jedného programu - zavedie sa operačný systém. Zabezpečuje komunikáciu medzi počítačom a uživateľom a beží do tej doby, kým je počítač zapnutý. Operašný systém na daný príkaz zavedie patričný program do pamäte, odštartuje ho a po skončení práce prevezme riadenie. Program môže mať vstupne (input) údaje, ktoré počas behu spracuje a výstupné (output) ktoré vytvára. Každý vyšší jazyk má prekladač (compiler), ktorý tiež spúšťame: vstupným údajom je zdrojový program a výstupným údajom je preložený objektový program (object code), resp. v prípade syntaktických chýb zoznam týchto chýb (pozri obr. 1.1.). Prirodzene syntaktických chýb sa dopúšťa programátor.
Prekladač program napísaný v zdrojovom jazyku prevedie do strojového kódu. Prekladač vo väčšine prípadov nedokáže všetko "pochopiť" hneď na prvý prechod. V takýchto prípadoch sa preklad prevádza na niekoľko etáp. Najprv analyzuje text, pri analýze vynechá zbytočnosti napr. poznámky, medzery atď. Potom preveruje správnosť zápisu príkazov - pri výskyte chyby upozorní. Sú také prekladače, ktoré pri výskyte prvej chyby prerušia ďalšiu činnosť. Iné prekladače vytvoria zoznam syntaktických chýb. V tomto poslednom prípade sa môže stať, že niektorá chyba zapríčiní celý rad ďalších a teda nemusia byť skutočnými chybami.
Sú lepšie a horšie prekladače. Niektoré rýchlo vytvoria objektový program, ale výsledný spustiteľný program bude pomalý, niektoré pomalšie prekladajú ale výsledok bude pracovať veľmi rýchlo.
 Obr 1.1 |
Všetky adresy v objektovom programe sú relatívne a teda ako celok sa dajú ľubovolne presúvať v pamäti (relocatable code). To znamená, že tento kód sa môže "začať" v ľubovolnom mieste pamäte. Daný kód môže byť už spustiteľný alebo po linkovaní s inými pragramami sa stane takým. Pripravené objektové programy, čakajúce na linkovanie, často zálohujeme na disketách a vo väčšine prípadov tvoria knižnice podprogramov. Linkovanie objektových programov (jedného alebo viacerých) vykonáva linker (obr. 1.2). Počet objektových programov v princípe nie je obmedzený a môže byť aj jeden.
 Obr 1.2 |
Pozor! Linker nie je textový editor. Pomocou neho nepíšeme zdrojový program.
Prekladač a linker sú veľmi často spojené do jedného celku a preto sa často (nesprávne) nazývajú prekladačom.
Vidíme ako sa tvorí program - zvolíme si programovací jazyk, ktorý nám yhovuje. Programovací jazyk je vtedy dobrý, keď s jeho pomocou dokážeme efektívne riešiť danú úlohu, ak ho poznáme a ak máme k dispozícii jeho prekladač. Ak máme k dispozícii viacero takých jazykov, potom vyberieme ten, ktorý je nám najmilší. Napíšeme zdrojový program a potom ho prekladačom preložíme. Pôvodne takto vznikol aj prekladač, ktorý teraz používáme. Teda máme program, ktorý chceme spustiť - môže to byť hra, prekladač, textový editor, archivátor náhradných súčiastok alebo program napr. podvojného účtovníctva. Čo použije náš program ako vstup závisí od autora programu. Samozrejme ľubovolný program môže spúšťať aj ďalší program, ale najvšeobecnejšie je to ak vstupom aj výstupom sú údaje. Program môže produkovať aj neočakávané veci - programátor je tiež len človek. Nie je neomylný. V takýchto prípadoch najčastejšie dochádza k zastaveniu programu (runtime error). Beh programu znázorňuje obr. č. 1.3.
Zostáva len otázka, ako treba napísať zdrojový program a ako treba spustiť spustiteľné programy? Našťastie sú vytvorené také programy, pomocou ktorých môžeme vytvoriť zdrojové programy - sú to textové editory. Samozrejme pre tieto účely nie je vhodný ľubovolný textový editor. Zložitejšie profesionálne textové editory nabalia textový súbor množstvom pomocných informácií, ktoré daný textový editor využíva pre rôzne účely ako sú stránkovanie, typ písma atď. Prekladač potrebuje iba ten text, ktorý má prekladať - t.j. iba sem patriace znaky a nemôže obsahovať žiadne riadiace znaky. Najvhodnejšie je používať jednoduchý textový editor dodávaný zo systémom, ak taký existuje.
 Obr 1.3 |
1.11 Triedenie softvéru
Väčšinu spustiteľných programov (softvér) môžeme zaradiť podľa ich funkcie do jednej z nasledujúcich tried:
Operačné systémy (Operating systems)
napr. DOS, OS/2, UNIX, VMS, WINDOWS NT
Vývojové systémy (Software development systems)
Vývojové systémy slúžia na vývoj a tvorbu programov. Pomocou takýchto prostriedkov môžeme vytvárať operačné systémy, uživateľské programy alebo nové vývojové systémy.
- Prekladače programovacích jazykov, vývojové prostredie - napr. Borland Pascal, Borland C++, Visual C++, Delphi, Macro Assembler
- Databázové programy - napr. Oracle, Focus, DataEase, Paradox
Uživateľské programy (Application programs, application packages)
Uživateľským programom nazývame ten program, ktorý bol vytvorený pre riešenie jednej špeciálnej úlohy a ktorý bezprostredne prispieva k riešeniu danej úlohy.
- Textové editory - napr. Word, WordPerfect, AmiPro
- Tabuľkové kalkulátory - napr. Lotus, Excel
- Vydavateľské programy - napr. Pagemaker, Corel Ventura
- Návrhárske programy - napr. 3D Design, Cad, Home Design
- Komunikačné programy - napr. Netscape navigator, MS Mail, WinFax
- Finančné systémy - napr. MS Money, Pegasus, BookKeeper
- Pomocné programy - napr. Norton Editor, PCTools
- Výukové programy
- Zábavné programy
- Multimediálne programy
Ako treba spúšťať už hotový program - závisí od operačného systému, ale obvykle je to veľmi jednoduché. Napr. pod DOS-om napíšeme názov programu a stlačíme klávesu ENTER.
|